import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName RegisterDemo
 * @Description 模拟注册操作，使用List集合模拟数据库中存储的数据，并提供当前注册账号是否存在用于判断
 * @Author Li
 * @Date 2022/8/7 10:19
 * @ModifyDate 2022/8/7 10:19
 * @Version 1.0
 */
public class RegisterDemo {
    private static List<String> list = getAccount();

    public static void main(String[] args) {
        String name = "麻子";
        // 调用方法
        try {
            // 可能出现异常的代码
            checkUsername(name);
            // 如果没有异常就是注册成功，将账号进行添加
            list.add(name);
            System.out.println(name + " 注册成功！");
        } catch (RegisterException e) {
            e.printStackTrace();
        }
    }

    // 模拟数据库中已经存在的账号
    private static List<String> getAccount() {
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王二");
        list.add("麻子");
        return list;
    }

    // 判断当前注册账号是否存在
    // 因为是编译期异常，所以抛出该异常需要声明抛出
    public static boolean checkUsername(String name) throws RegisterException {
        for (String s : list) {
            // 如果名字已经在里面，就抛出注册异常
            if (name.equals(s)) {
                throw new RegisterException(name + "账号已经被注册了！");
            }
        }
        return true;
    }
}
